import * as vscode from "vscode";
import * as child_process from 'child_process';


export function activate(context: vscode.ExtensionContext) {
  console.log("JS 和 TS 文件监听器 activate");

  try {
    // 获取插件配置
    const config = vscode.workspace.getConfiguration('watcher_file');
    if (!config.get('isWatch')) return;

    console.log("JS 和 TS 文件监听器 watchPath:", config.get('watchPath'));
    // 创建一个监听器，监听 .js 和 .ts 文件  "**/*.{js,ts}"
    const watcher = vscode.workspace.createFileSystemWatcher(config.get('watchPath') as string);

    // 监听文件新增
    watcher.onDidCreate((uri) => {
      // vscode.window.showInformationMessage(`新增文件: ${uri.fsPath}`);
      runCommand(config);
    });

    // 监听文件删除
    watcher.onDidDelete((uri) => {
      // vscode.window.showInformationMessage(`删除文件: ${uri.fsPath}`);
      runCommand(config);
    });

    // 监听文件更改（可选）
    // watcher.onDidChange((uri) => {
    //   vscode.window.showInformationMessage(`文件更改: ${uri.fsPath}`);
    // });

    // 清理资源：扩展关闭时，自动释放监听器
    context.subscriptions.push(watcher);

    vscode.window.showInformationMessage("JS 和 TS 文件监听器已激活！");
  } catch (error) {
    console.error("JS 和 TS 文件监听器 activate 失败：", error);
    vscode.window.showErrorMessage("JS 和 TS 文件监听器 activate 失败！");
  }
}




export function deactivate() { }



function runCommand(config: vscode.WorkspaceConfiguration) {
  const command = config.get('runStr') as string;
  if (!command) return vscode.window.showInformationMessage(`命令为空`);

  vscode.window.showInformationMessage(`运行命令: ${command}`);
  // 执行命令
  child_process.exec(command, (error, stdout, stderr) => {
    if (error) {
      vscode.window.showErrorMessage(`执行命令时出错: ${error.message}`);
      return;
    }
    if (stderr) {
      vscode.window.showErrorMessage(`标准错误: ${stderr}`);
      return;
    }
    // 显示命令的输出
    vscode.window.showInformationMessage(`命令输出: ${stdout}`);
  });
}
